1. Field of the Invention
The present invention relates generally to computer networks and, more particularly, to applications that are executed by multiple users over a computer network.
2. Description of the Related Art
Computer networks, such as local area networks and the Internet, are increasingly being used as the backbone for various transactions and interactions between parties. From online banking, where bank customers can initiate financial transactions over a computer network, to online gaming, where gamers can participate in real-time gaming over the Internet, service providers are increasingly supporting a variety of services over computer networks. There are currently a variety of different computer network configurations that facilitate the transactions and interactions that take place.
Many of the online applications involve multiple-user applications, which are computer programs that are executed on a computer system and which allow multiple geographically separated participants to interact with the computer program and other participating users in an application environment. For example, on-line gaming is a popular multiple user application that is increasing in popularity. An on-line aircraft simulation game can enable multiple participants to pilot their respective virtual aircraft within a virtual airspace, and can enable the participants to interact with other participants in their aircraft in the same airspace. Each participant has control over the flying actions of their respective virtual aircraft. That is, each participant has ownership of an application object comprising an aircraft. Thus, the online aircraft gaming application provides a single application environment or universe in which multiple participants maneuver their respective objects.
In a multiple user application environment, such as online gaming, with distinct, geographically dispersed application users, such as game participants, each participant will generally be responsible for one or more data objects that will be modified or manipulated by the local user of the application. These data objects are “ownable” data objects and each user is associated with one or more such corresponding application objects.
For example, in an on-line gaming environment, each participant will generally be responsible for maintaining state data about that participant's contestant or entry in the gaming application environment. The participant's game entry is typically represented by a data object. In a transactional multiple user environment, a user might be responsible for data relating to an account, which is represented by a data object. In both application environments, the respective user is said to “own” the data object, either the game participant object or the transaction account object, in that the user has responsibility for updating the user's data object in the application environment. In the game scenario, the user typically has control over movement of the corresponding data object within the shared object space of the game application, and typically also has responsibility for maintaining data about the data object state (and so owns the data object).
To support real-time interaction among the users in a multiple user application environment, it has been necessary to share information about every participant's corresponding data object in the application environment. The state of a user's data object can be defined by a collection of data fields whose values can change during the user interaction. For example, in a game application, the data object of a user will change position in the game environment, and in a transactional application, the data object of a user will have a changed transaction history and account balance.
To share state information for the user's data object among the network users, it is necessary to share the value of the various data fields that define the data object. For example, in an aircraft simulation multiple user application, where each user is represented by an aircraft data object, the data fields relating to state information about the aircraft can include aircraft size, aircraft speed, altitude in three-dimensional space, appearance details (such as battle damage or control surface position), virtual environment details (such as buildings, weather, and terrain), and the like. Such state information permits the computer at each participant to properly keep track of game developments and determine the actions being performed by each of the other participants. This permits each participant to produce properly rendered visual images on the participant's viewing display, and permits the other participants to do likewise. In a transactional application environment, the data fields might include user name, account information, account balance, and the like. Such information would permit multiple users to ascertain details about a particular transactional account.
Some on-line, multiple user applications communicate details about the state of respective user application objects by sending network update messages to all users, in accordance with an application update time interval. For an online game, a user who is a game participant will be responsible for maintaining an up-to-date set of data fields for the application object owned by that network user. If a change has occurred in the state of the application object owned by the network user, such as an aircraft in a simulation game, then the owning user must communicate those changes to the other network participants via update messages. Thus, each network user who owns a data object will prepare and send update messages to the other network clients to keep them apprised of changes in their data object. In this way, update messages from each owning user will communicate changes in the data fields to the other network clients. Thus, all the network user participants will be kept informed with accurate data object status information.
Unfortunately, the amount of data to be communicated via the update messages and shared among all the participants can be onerous. As noted above, the data fields needed to update the visual rendering of a game participant's application object in an aircraft simulation application can include information such as aircraft size, speed, and altitude, appearance details (such as external damage or control surface position), virtual environment details (such as buildings, weather, and terrain), and the like. The amount of information that must be shared among all of the application participants can be so great that it can result in bandwidth saturation. That is, some users might have limited network bandwidth and might have difficulty receiving update messages quickly enough in real time to remain “in play” through the application environment created by the network application.
One way to permit users with limited bandwidth to participate in multiple user applications, such as on-line gaming, is to reduce the number of data objects whose details are being shared among all users. This can be achieved, for example, by dividing the application environment into zones of interest so that users in one application environment area of interest are not provided with information about application objects in other application environment areas. A user who owns a data object in one area of the application environment need not send updated data fields to users in other areas of the application environment. This reduces the amount of information that must be transmitted each owning user over the network. Each user does not necessarily need to download each and every update message propagated by the network clients for the application. Such a system is described, for example, in the distributed processing system of U.S. Pat. No. 5,841,980 by R. Waters and J. Allred. With such distributed processing in place, a user can be spared downloading and processing all the update messages for an application object. This means that real-time interaction of the participants will not be slowed by processing of update messages.
Even with a limited-sharing environment, however, the number of data fields associated with a data object can be sufficiently numerous or detailed that a user's bandwidth could still be taxed by demands for processing relating to all the application objects that are within the user's virtual environment zone of interest. In fact, the update messages for application objects in the same application environment zone could include much data that is of no importance from the network client's perspective. This can be the case, for example, if the application object update message includes all the graphical information needed for a detailed rendering, though the application object is not sufficiently close to the user's viewing perspective to see the details. In addition, even if a user has a reserve of bandwidth available, it is more efficient for network operations if network data traffic did not include all data fields for all data objects, regardless of need at each participating user.
Thus, current multiple user applications are not configured for maximum efficiency with respect to application object updates. Even reduced data transfers based on dividing an application environment into distinct update zones can still tax the bandwidth resources of participants and create unnecessary network data traffic. Thus, there is a need for an improved, more efficient online multiple user application environment. The present invention satisfies this need.